<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>
<script>
    //1.题目描述 找出元素 item 在给定数组 arr 中的位置 输出描述: 如果数组中存在 item，则返回元素在数组中的位置，否则返回 -1

    var arr = [1,2,3,4];    
    console.log(arr.indexOf(1)); // 0
    console.log(arr.indexOf(5)); // -1

    //2.题目描述 计算给定数组 arr 中所有元素的总和 输入描述: 数组中的元素均为 Number 类型

    function sum(arr){
        return eval(arr.join("+"))
    }
    var arrs = [10,20,30,22,40];
    console.log(sum(arrs)); // 122

    //3.题目描述 移除数组 arr 中的所有值与 item 相等的元素。不要直接修改数组 arr，结果返回新的数组

    function removing(arr,item){
        var a= arr.slice(0);
        for(var i =0;i<arr.length;i++){
            if(a[i]==item){
                a.splice(i,1);            
            }
        }
        return a;
    };
    var arrs = [1,2,3,4];
    console.log(removing(arrs,2));

    //4.题目描述 移除数组 arr 中的所有值与 item 相等的元素，直接在给定的 arr 数组上进行操作，并将结果返回

    function remove(arr, item) {
     //声明一个新数组保存结果
     var a = [];
     //循环遍历
     for(var i=0; i < arr.length; i++){
         //如果arr[i]不等于item，就加入数组a
         if(arr[i] != item){
             a.push(arr[i]);
         }
     }
     return a;
    };
    var arr = [22,33,44,55,66];
    console.log(remove(arr,22));

    //5.题目描述 在数组 arr 末尾添加元素 item。不要直接修改数组 arr，结果返回新的数组

    function application(arr,item){
        return arr.concat(item);
        }
    var arr02 = [0,0,16,12];
    console.log(application(arr02,20));

    //6.题目描述 删除数组 arr 最后一个元素。不要直接修改数组 arr，结果返回新的数组

    function deleted(arr){
        var newarr = arr.concat();
        newarr.pop();
        return newarr;
    }
    var arr02 = [0,0,16,12];
    console.log(deleted(arr02));

    //7.题目描述 在数组 arr 开头添加元素 item。不要直接修改数组 arr，结果返回新的数组

    var arr03 = [0,2,4,56];
    arr03.unshift(22);
    console.log(arr03);

    //8.题目描述 删除数组 arr 第一个元素。不要直接修改数组 arr，结果返回新的数组

    var arr04 = [1,2,3,4];
    function truncate(arr) {
    return arr.slice(0,arr.length-1)
    }
    console.log(truncate(arr04));

    //9.题目描述 合并数组 arr1 和数组 arr2。不要直接修改数组 arr，结果返回新的数组

    var arr05 = [1,2,3,4];
    var arr06 = ["b","c","d"];
    console.log(arr05.concat(arr06));

    //10.题目描述 在数组 arr 的 index 处添加元素 item。不要直接修改数组 arr，结果返回新的数组

    function insert(arr, item, index) {
    return arr.slice(0,index).concat(item,arr.slice(index));
    }
    var arr06 =[777,888,999];
    console.log(insert(arr06,100,1));

    //11.题目描述 统计数组 arr 中值等于 item 的元素出现的次数

    function sum(arr,item){
        var sum = 0;
        for(var i =0;i<arr.length;i++){
            if(arr[i]==item){
                sum++;
            }
        }
        return sum;
    }
    var arr07 = [4,4,4,3,3,2,2,10];
    console.log(sum(arr07,4));

    //12.题目描述 找出数组 arr 中重复出现过的元素

    function again(arr) {
    var newArr=[];
    arr.sort();
    for(var i =0;i<arr.length;i++){
        if(arr[i]==arr[i+1]&&(newArr.indexOf(arr[i])==-1) ){
            newArr.push(arr[i]);
            i++;
        }
    }
    return newArr;
    }

    var arr08 = [1,1,1,3,3,3,4,4,4,5,6,7,7];
    console.log(again(arr08));

    //13.题目描述 为数组 arr 中的每个元素求二次方。不要直接修改数组 arr，结果返回新的数组
    function square(arr) {
    return arr.map(item =>{
    return item*item
        })
    }
    var arr09 = [1,3,5,7,9];
    console.log(square(arr09));

    //14.题目描述 在数组 arr 中，查找值与 item 相等的元素出现的所有位置

    function find(arr, target) {
    var arr1=[];
    for(var i=0;i<arr.length;i++){
        if(arr[i]===target){
            arr1.push(i);
        }
    }
    return arr1;
    }
    var arr10 = ['a','e','b','c','c','d','e'];
    console.log(find(arr10,'c'));






    
    


</script>
<body>
    
</body>
</html>